

package Estructuras;

/**
 *
 * @author Luis E Sosa S
 */
public abstract class sched_class {

  /* funcion llamada cuando una tarea cambia a estado runnable
   * este coloca el scheduling_entity (proceso) dentro del scheduler_class
   */

  public abstract void enqueue_task(Task_struct task);


 
   /**
    *Cuando una tarea no puede seguir ejecutandose esta funcion es llamada
    * para guardar el schedling_entity fuera del scheduler
    * esta decrementa la variable nr_running
    */
  public   abstract Task_struct dequeue_task(Task_struct ts);

  

  /**
  *Agrega un procesos a la cola de expirados
  *
  */
  public abstract void yield_task(Task_struct task);


  
  /**
   * Agrega un proceso a la cola de expropiados
   */
   public abstract void agregarExpropiado(Task_struct task);


  /**
   * Esta funcion revisa si una tarea en estado runnable con mayor prioridad
   * esta en el scheduler y de esta forma seleccionarla para que
   *se ejecute
   */
  //public abstract void check_preempt_curr();


 /**
  *Funcion que selecciona la tarea mas apropiada para ser ejecutada
  */
   public abstract Task_struct pick_next_task();

 
}
